package ru.st.selenium.pages;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

import static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated;

public class TypesObjectPage extends AnyPage {

	public TypesObjectPage(PageManager pages) {
		super(pages);
	}
	
	@FindBy(xpath = "//a/span[contains(@id, 'button-10')]")
	private WebElement clickOkAndAddFieldTypesTable;
	
	@FindBy(id = "messagebox-1001-textfield-inputEl")
	private WebElement nameObject;
	
	@FindBy(xpath ="//*[@id='bAddRec-btnIconEl']")
	private WebElement clickAddTypesObject;
	
	@FindBy(id = "flow")
	private WebElement Frem;
	

	// Уходим во фрейм
	public TypesObjectPage gotoFremObjectPage() {
		driver.switchTo().frame(Frem);
		return this;
	}
	
	// Уходим из фрейм опять в ТОР
	public TypesObjectPage gotoTopFrem() {
		driver.switchTo().defaultContent();
		return this;
	}

	// Кнопка: Добавить - в гриде - Типы Таблиц/Типы задач/Справочники
	public TypesObjectPage AddTypesObject() {
		clickAddTypesObject.click();
		// Ждем появления формы ввода Названия Типы таблицы
		waitForPageUntilElementIsVisible(
				By.name("messagebox-1001-textfield-inputEl"), 5000);
		return this;
	}

	// Вводим название объекта и нажимаем кнопку ОК для сохранения
	public TypesObjectPage setNameObject(String text) {
		nameObject.sendKeys(text);
		clickOkAndAddFieldTypesTable.click();
		return this;
	}

	// Ожидание созданного объекта
	public TypesObjectPage verifyCreateObject() {
		waitForPageUntilElementIsVisible(
				By.xpath("//*[contains(text(),'SObject')] [ancestor::tbody[contains(@id,'gridview-')]]"),
				5000);
		return this;
	}

	// Ожидание появления элемента в гридах - Типы таблиц/Типы задач/Справочники
	public TypesObjectPage ensurePageLoaded() {
		super.ensurePageLoaded();
		wait.until(presenceOfElementLocated(By
				.xpath("//*[@id='bAddRec-btnIconEl']")));
		wait.until(presenceOfElementLocated(By
				.xpath("//*[@id='bEditRec-btnIconEl']")));
		return this;
	}

}